#include "ListaParametros.h"
#include "TagHandler.h"

bool ListaParametros::instance = false;
ListaParametros* ListaParametros::singleton = 0 ;


ListaParametros::ListaParametros(){

	this->nombrePacman1 = 0;
	this->texturaAPacman1 = 0;
	this->texturaBPacman1 = 0;
	this->alphaPacman1 = 0 ;

	this->nombrePacman2 = 0;
	this->texturaAPacman2 = 0 ;
	this->texturaBPacman2 = 0 ;
	this->alphaPacman2 = 0 ;
	
	this->musicaInicio = 0; 
	this->musicaJuego = 0;

	this->sonidoChoquePacman = 0;
	this->sonidoChoqueFantasmaPacmanAmigo = 0;
	this->sonidoChoqueFantasmaPacmanEnemigo = 0;
	this->sonidoComeBonusSimple = 0;
	this->sonidoComeBonusComplejo = 0;

}

ListaParametros* ListaParametros::getInstance(){
	if(!ListaParametros::instance){
		ListaParametros::singleton = new ListaParametros();
		ListaParametros::instance = true;
	}
	return ListaParametros::singleton;
}

// NOMBRES PACMAN
string* ListaParametros::getNombrePacman1(){
	if(this->nombrePacman1){
		return this->nombrePacman1 ;
	}else{
		return new string(DEFAULT_NOMBRE_PACMAN_1) ;
	}
}
string* ListaParametros::getNombrePacman2(){
	if(this->nombrePacman2){
		return this->nombrePacman2 ;
	}else{
		return new string(DEFAULT_NOMBRE_PACMAN_2) ;
	}
}

void ListaParametros::setNombrePacman1(string* s){
	this->nombrePacman1 = s ;
}

void ListaParametros::setNombrePacman2(string* s){
	this->nombrePacman2 = s ;
}

void ListaParametros::setNombrePacman1(const string& s){
	this->nombrePacman1 = new string(s) ;
}

void ListaParametros::setNombrePacman2(const string& s){
	this->nombrePacman2 = new string(s) ;
}


// -------------------------------

// TEXTURAS DE PACMAN -----------------
string* ListaParametros::getTexturaAPacman1(){
	if(this->texturaAPacman1){
		return this->texturaAPacman1 ;
	}else{
		return new string(DEFAULT_TEXTURA_A_PACMAN_1);
	}
}

string* ListaParametros::getTexturaBPacman1(){
	if(this->texturaBPacman1){
		return this->texturaBPacman1 ;
	}else{
		return new string(DEFAULT_TEXTURA_B_PACMAN_1);
	}
}

string* ListaParametros::getAlphaPacman1(){
	if(this->alphaPacman1){
		return this->alphaPacman1 ;
	}else{
		return new string(DEFAULT_ALPHA_PACMAN_1);
	}
}

void ListaParametros::setTexturaAPacman1(string* tA){
	this->texturaAPacman1 = tA ;
}

void ListaParametros::setTexturaBPacman1(string* tB){
	this->texturaBPacman1 = tB ;
}

void ListaParametros::setAlphaPacman1(string* a){
	this->alphaPacman1 = a ;
}

void ListaParametros::setTexturaAPacman1(const string& tA){
	this->texturaAPacman1 = new string(tA) ;
}

void ListaParametros::setTexturaBPacman1(const string& tB){
	this->texturaBPacman1 = new string(tB) ;
}

void ListaParametros::setAlphaPacman1(const string& a){
	this->alphaPacman1 = new string(a) ;
}

string* ListaParametros::getTexturaAPacman2(){
	if(this->texturaAPacman2){
		return this->texturaAPacman2 ;
	}else{
		return new string(DEFAULT_TEXTURA_A_PACMAN_2);
	}
}

string* ListaParametros::getTexturaBPacman2(){
	if(this->texturaBPacman2){
		return this->texturaBPacman2 ;
	}else{
		return new string(DEFAULT_TEXTURA_B_PACMAN_2);
	}
}

string* ListaParametros::getAlphaPacman2(){
	if(this->alphaPacman2){
		return this->alphaPacman2 ;
	}else{
		return new string(DEFAULT_ALPHA_PACMAN_2) ;
	}
}

void ListaParametros::setTexturaAPacman2(string* tA){
	this->texturaAPacman2 = tA ;
}

void ListaParametros::setTexturaAPacman2(const string& tA){
	this->texturaAPacman2 = new string(tA) ;
}

void ListaParametros::setTexturaBPacman2(string* tB){
	this->texturaBPacman2 = tB ;
}

void ListaParametros::setTexturaBPacman2(const string& tB){
	this->texturaBPacman2 = new string(tB) ;
}

void ListaParametros::setAlphaPacman2(string* a){
	this->alphaPacman2 = a ;
}

void ListaParametros::setAlphaPacman2(const string& a){
	this->alphaPacman2 = new string(a) ;
}
// ---------------------------------

// SONIDOS ----------------------------
string* ListaParametros::getMusicaInicio(){
	if(this->musicaInicio){
		return this->musicaInicio ;
	}else{
		return new string(DEFAULT_MUSICA_INICIO) ;
	}
}

void ListaParametros::setMusicaInicio(string* s){
	this->musicaInicio = s ;
}

void ListaParametros::setMusicaInicio(const string& s){
	this->musicaInicio = new string(s) ;
}

string* ListaParametros::getMusicaFondo(){
	if(this->musicaJuego){
		return this->musicaJuego ;
	}else{
		return new string(DEFAULT_MUSICA_JUEGO) ;
	}
}

void ListaParametros::setMusicaFondo(string* s){
	this->musicaJuego = s ;
}

void ListaParametros::setMusicaFondo(const string& s){
	this->musicaJuego = new string(s) ;
}

string* ListaParametros::getSonidoChoquePacman(){
	if(this->sonidoChoquePacman){
		return this->sonidoChoquePacman ;
	}else{
		return new string(DEFAULT_SOUND_CHOQUE_PACMAN) ;
	}
}

void ListaParametros::setSonidoChoquePacman(string* s){
	this->sonidoChoquePacman = s ;
}

void ListaParametros::setSonidoChoquePacman(const string& s){
	this->sonidoChoquePacman = new string(s) ;
}

string* ListaParametros::getSonidoChoqueFantasmaPacmanAmigo(){
	if(this->sonidoChoqueFantasmaPacmanAmigo){
		return this->sonidoChoqueFantasmaPacmanAmigo ;
	}else{
		return new string(DEFAULT_SOUND_CHOQUE_AMIGO) ;
	}
}

void ListaParametros::setSonidoChoqueFantasmaPacmanAmigo(string* s){
	this->sonidoChoqueFantasmaPacmanAmigo = s ;
}

void ListaParametros::setSonidoChoqueFantasmaPacmanAmigo(const string& s){
	this->sonidoChoqueFantasmaPacmanAmigo = new string(s) ;
}


string* ListaParametros::getSonidoChoqueFantasmaPacmanEnemigo(){
	if(this->sonidoChoqueFantasmaPacmanEnemigo){
		return this->sonidoChoqueFantasmaPacmanEnemigo ;
	}else{
		return new string(DEFAULT_SOUND_CHOQUE_ENEMIGO) ;
	}
}

void ListaParametros::setSonidoChoqueFantasmaPacmanEnemigo(string* s){
	this->sonidoChoqueFantasmaPacmanEnemigo = s ;
}

void ListaParametros::setSonidoChoqueFantasmaPacmanEnemigo(const string& s){
	this->sonidoChoqueFantasmaPacmanEnemigo = new string(s) ;
}

string* ListaParametros::getSonidoComeBonusSimple(){
	if(this->sonidoComeBonusSimple){
		return this->sonidoComeBonusSimple ;
	}else{
		return new string(DEFAULT_SOUND_CHOQUE_BONUS_SIMPLE) ;
	}
}

void ListaParametros::setSonidoComeBonusSimple(string* s){
	this->sonidoComeBonusSimple = s ;
}

void ListaParametros::setSonidoComeBonusSimple(const string& s){
	this->sonidoComeBonusSimple = new string(s) ;
}

string* ListaParametros::getSonidoComeBonusComplejo(){
	if(this->sonidoComeBonusComplejo){
		return this->sonidoComeBonusComplejo ;
	}else{
		return new string(DEFAULT_SOUND_CHOQUE_BONUS_COMPLEJO) ;
	}
}

void ListaParametros::setSonidoComeBonusComplejo(string* s){
	this->sonidoComeBonusComplejo = s ;
}

void ListaParametros::setSonidoComeBonusComplejo(const string& s){
	this->sonidoComeBonusComplejo = new string(s)  ;
}

// ----------------------------------------------

void ListaParametros::destroy(){
	delete this->singleton ;
	this->instance = false;
}

ListaParametros::~ListaParametros(){
	delete nombrePacman1;
	delete nombrePacman2 ;

	delete texturaAPacman1;
	delete texturaBPacman1;
	delete alphaPacman1 ;

	delete texturaAPacman2;
	delete texturaBPacman2;
	delete alphaPacman2  ;
	
	delete musicaInicio;
	delete musicaJuego;

	delete sonidoChoquePacman;
	delete sonidoChoqueFantasmaPacmanAmigo;
	delete sonidoChoqueFantasmaPacmanEnemigo;
	delete sonidoComeBonusSimple;
	delete sonidoComeBonusComplejo; 
}